/*
 * ManejadorContexto.cpp
 *
 *  Created on: 17/06/2010
 *      Author: Grupo Klow
 */

#include "ManejadorContexto.h"


	char* ManejadorContexto::getNombreTemp(string nombre_archivo){

		string nombre_temp = ".temp";
		//nombre_temp += nombre_archivo;
		nombre_temp = nombre_archivo + nombre_temp;
		char* nombre_aux = new char[nombre_temp.length()+1];
		strcpy(nombre_aux,nombre_temp.c_str());

		return nombre_aux;
	}

	void ManejadorContexto::imprimirHelper(FILE * salida, Contexto * ctx){

		fprintf(salida,"\nContexto: <%s>", ctx->getNombre().c_str());
		fprintf(salida,"\n\tFrecuencia Total: %u", ctx->getFrecuenciaTotal());
		fprintf(salida,"\n\tCantidad de Escapes: %u", ctx->getCantidadDeEscapes());
		fprintf(salida,"\n\tCantidad de Caracteres: %u", ctx->getCantidadDeCaracteres());

		fprintf(salida,"\n\tTabla de frecuencias:");

		TTablaFreq::iterator it = ctx->getTabla()->begin();

		for(int j=0; j < (int)ctx->getCantidadDeCaracteres(); j++){
			if(it->first == SALTO_DE_LINEA){
				fprintf(salida,"\n\t\t- caracter '\\n': frecuencia: %u", (unsigned)it->second);
			}
			else
			{
					fprintf(salida,"\n\t\t- caracter '%c': frecuencia: %u", (char)it->first, (unsigned)it->second);
			}
			it++;
		}

		if (ctx->getCantidadDeEOF()!=0) {
			fprintf(salida,"\n\t\t- caracter 'EOF': frecuencia: %u", ctx->getCantidadDeEOF());
		}
		if ((int)ctx->getCantidadDeCaracteres() == 0)
			fprintf(salida,"\n\t\t- - -");

		fprintf(salida, "\n");
	}

	void ManejadorContexto::imprimirContextoParticular(FILE * salida, string contextoNombre){
		//validar que el 'salida' este abierto para escritura?

		Contexto * ctxPart = this->buscarContexto(contextoNombre);
		if (ctxPart != NULL)
			imprimirHelper(salida, ctxPart);
		else
		{
			fprintf(salida, "\nEl contexto '%s' no existe.\n", contextoNombre.c_str());
		}
		delete(ctxPart);
	}
